#ifndef _IRUNTIME_H_
#define _IRUNTIME_H_

interface IThreadProc : public IBase
{
    std_method(OnThread)(LPCSTR name) PURE;
};

// {44834C96-4B81-4D13-B8C3-F3B59214F8B8}
_DEF_IID(IID_IThreadProc, 0x44834c96, 0x4b81, 0x4d13, 0xb8, 0xc3, 0xf3, 0xb5, 0x92, 0x14, 0xf8, 0xb8);

interface IThreadPoolProc : public IBase
{
    std_method(OnStartThreadPool)(LPCSTR name) PURE;
    std_method(OnStopThreadPool)(LPCSTR name) PURE;
    std_method(OnThreadPool)(UINT id, LPCSTR name) PURE;
};

// {980C48D9-FA0F-460A-BAD9-0D611CEA8973}
_DEF_IID(IID_IThreadPoolProc, 0x980c48d9, 0xfa0f, 0x460a, 0xba, 0xd9, 0xd, 0x61, 0x1c, 0xea, 0x89, 0x73);

interface IRunTime : public IBase
{
    std_method(CreateThread)(LPCSTR name, IBase* pBase) PURE;
    std_method(StartThread)(LPCSTR name) PURE;
    std_method(StopThread)(LPCSTR name) PURE;
};

// {EC946DB6-05D1-4E61-AFB0-0AC959DD9770}
_DEF_IID(IID_IRunTime, 0xec946db6, 0x5d1, 0x4e61, 0xaf, 0xb0, 0xa, 0xc9, 0x59, 0xdd, 0x97, 0x70);

// {7F17A42A-B5DF-4281-87C3-BFC44486F55C}
_DEF_CLSID(CLSID_CRunTime, 0x7f17a42a, 0xb5df, 0x4281, 0x87, 0xc3, 0xbf, 0xc4, 0x44, 0x86, 0xf5, 0x5c);

#endif
